/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package Servicios.Dao.Impl;

import Entidades.SolicitudTraslado;
import Servicios.Dao.SolicitudTrasladoDao;
import java.sql.Connection;
import java.util.Date;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Timestamp;
import java.util.ArrayList;
import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;

/**
 *
 * @author TRACY
 */
public class SolicitudTrasladoDaoImpl implements SolicitudTrasladoDao{
    Connection cn;
    
    public SolicitudTrasladoDaoImpl(Connection cn){
        this.cn = cn;
    }

    @Override
    public void createSolicitudFondos(String IDSolicitud, String IDOrgano, String Urgencia , Date FechaEmision, String EstadoSolicitud, Double Monto) {
        String sql = "INSERT INTO SOLICITUD_DE_TRASLADO_DE_FONDO VALUES(?,?,?,?,?,?)";   
        Timestamp fechaza = new Timestamp(FechaEmision.getTime());
        try {
            PreparedStatement pst = cn.prepareStatement(sql);
            pst.setString(1, IDSolicitud);
            pst.setString(2, IDOrgano);
            pst.setString(3, Urgencia);
            pst.setTimestamp(4, fechaza);
            pst.setString(5, EstadoSolicitud);
            pst.setDouble(6, Monto);
            pst.executeUpdate();
            pst.close();
        } catch (SQLException ex) {
            Logger.getLogger(SolicitudTrasladoDaoImpl.class.getName()).log(Level.SEVERE, null, ex);
        }
        
    }
    
    public void createSolicitudFondos(SolicitudTraslado st) {
        String sql = "INSERT INTO SOLICITUD_DE_TRASLADO_DE_FONDO VALUES(?,?,?,?,?,?)";   
        Timestamp fechaza = new Timestamp(st.getFechaEmision().getTime());
        try {
            PreparedStatement pst = cn.prepareStatement(sql);
            pst.setString(1, st.getIDSolicitud());
            pst.setString(2, st.getIDOrgano());
            pst.setString(3, st.getUrgencia());
            pst.setTimestamp(4, fechaza);
            pst.setString(5, st.getEstadoSolicitud());
            pst.setDouble(6, st.getMontoSolcitado());
            pst.executeUpdate();
            pst.close();
        } catch (SQLException ex) {
            Logger.getLogger(SolicitudTrasladoDaoImpl.class.getName()).log(Level.SEVERE, null, ex);
        }
        
    }
 
    
    @Override
    public String calcularMaxID() {
        String sql = "select MAX(IDSOLICITUD) maximo from SOLICITUD_DE_TRASLADO_DE_FONDO";
        String max="";
        try {
            PreparedStatement pst = cn.prepareStatement(sql);
            ResultSet rs = pst.executeQuery();
            while (rs.next()) {                
                max = rs.getString("maximo");
            }
            pst.close();
        } catch (SQLException ex) {
            Logger.getLogger(SolicitudTrasladoDaoImpl.class.getName()).log(Level.SEVERE, null, ex);
        }
        return max;
    }

    @Override
    public List<SolicitudTraslado> buscarSolicitudTraslado() {
       
       List<SolicitudTraslado> solicitudtraslados = new ArrayList<SolicitudTraslado>();
        String sql ="select * from SOLICITUD_DE_TRASLADO_DE_FONDO";
        try {
            PreparedStatement pst = cn.prepareStatement(sql);
            ResultSet rs = pst.executeQuery();
            while (rs.next()) {               
            
                SolicitudTraslado solicitudtraslado = new SolicitudTraslado();
                solicitudtraslado.setEstadoSolicitud(rs.getString("ESTADOSOLICITUD"));
                solicitudtraslado.setIDSolicitud(rs.getString("IDSOLICITUD"));
                solicitudtraslado.setIDOrgano(rs.getString("IDORGANO"));
                solicitudtraslado.setUrgencia(rs.getString("URGENCIA"));
                solicitudtraslado.setMontoSolcitado(rs.getDouble("MONTOSOLICITADO")); 
                solicitudtraslado.setFechaEmision(rs.getDate("FECHAEMISION"));
                solicitudtraslados.add(solicitudtraslado);
            }
        } catch (SQLException ex) {
            Logger.getLogger(OrganoDaoImpl.class.getName()).log(Level.SEVERE, null, ex);
        }
        
        return solicitudtraslados;
    
    }

    
    @Override
    public SolicitudTraslado buscarSolicitud(String id) {
        
       SolicitudTraslado solicitudtraslado = new SolicitudTraslado();
       String sql = "SELECT * FROM SOLICITUD_DE_TRASLADO_DE_FONDO where IDSOLICITUD = ?";
        try {
            PreparedStatement pst = cn.prepareStatement(sql);
            pst.setString(1, id);
            ResultSet rs = pst.executeQuery();
            while (rs.next()) {                
                solicitudtraslado.setIDSolicitud(rs.getString("IDSOLICITUD"));
                solicitudtraslado.setIDOrgano(rs.getString("IDORGANO"));
                solicitudtraslado.setUrgencia(rs.getString("URGENCIA"));
                solicitudtraslado.setFechaEmision(rs.getDate("FECHAEMISION"));
                solicitudtraslado.setEstadoSolicitud(rs.getString("ESTADOSOLICITUD"));
                solicitudtraslado.setMontoSolcitado(rs.getDouble("MONTOSOLICITADO"));                         
            }
        } catch (SQLException ex) {
            Logger.getLogger(SolicitudTrasladoDaoImpl.class.getName()).log(Level.SEVERE, null, ex);
        }
        return solicitudtraslado;
    
    
    
    }

    @Override
    public void aprobarSolicitud(String id) {
        String sql ="update SOLICITUD_DE_TRASLADO_DE_FONDO set ESTADOSOLICITUD = 'P' where IDSOLICITUD = ?";
        try {
            PreparedStatement pst = cn.prepareStatement(sql);
            pst.setString(1, id);
            pst.executeUpdate();
        } catch (SQLException ex) {
            Logger.getLogger(SolicitudTrasladoDaoImpl.class.getName()).log(Level.SEVERE, null, ex);
        }
        
    }

    @Override
    public void rechazarSolicitud(String id) {
        String sql ="update SOLICITUD_DE_TRASLADO_DE_FONDO set ESTADOSOLICITUD = 'R' where IDSOLICITUD = ?";
        try {
            PreparedStatement pst = cn.prepareStatement(sql);
            pst.setString(1, id);
            pst.executeUpdate();
        } catch (SQLException ex) {
            Logger.getLogger(SolicitudTrasladoDaoImpl.class.getName()).log(Level.SEVERE, null, ex);
        }
    }
 
}
